package com.offcn.poi;


import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.*;
import java.net.URL;

/**
 * @Author: wy
 * @Date: 2022/9/1 09:29
 */
public class PoiDemo {


    //读取excel 表格中的数据
    public void readExcel() throws Exception {
        //读取Excel 文件
        URL url = PoiDemo.class.getClassLoader().getResource("hello.xlsx");
        // 文件输出流
        FileInputStream fis = new FileInputStream(new File(url.toURI()));

        //创建 读取excel 的 方法
        XSSFWorkbook xssfWorkbook = new XSSFWorkbook(fis);
        //获取excel 里面的 第一个页面
        XSSFSheet sheetAt0 = xssfWorkbook.getSheetAt(0);
        System.out.println(sheetAt0);

        //获取最后一行的数据所在行
        int lastRowNum = sheetAt0.getLastRowNum();
        System.out.println(lastRowNum);

        if (lastRowNum > 0) {

            //i 从1 开始 我们可以跳过 表头
            for (int i = 1; i <= lastRowNum; i++) {
                //获取行
                XSSFRow rowi = sheetAt0.getRow(i);
                //在获取 行中对应的列

                //注意在 有点列中 我们需要注意他的 数据类型  因为id 为integer 类型 我们需要先进行修改
                rowi.getCell(0).setCellType(Cell.CELL_TYPE_STRING);
                String id = rowi.getCell(0).getStringCellValue();

                String name = rowi.getCell(1).getStringCellValue();

                rowi.getCell(2).setCellType(Cell.CELL_TYPE_STRING);
                String age = rowi.getCell(2).getStringCellValue();

                String sex = rowi.getCell(3).getStringCellValue();
                System.out.println(id + name + age + sex);
            }
            //关闭流
            fis.close();
            xssfWorkbook.close();
        }
    }

    public void WriteExcel() throws IOException {
        XSSFWorkbook xssfWorkbook = new XSSFWorkbook();

        //创建表格中的  第一页的名字为 —— wangyu
        XSSFSheet sheet = xssfWorkbook.createSheet("wangyu");
        //创建第一行 --  为表头
        XSSFRow row0 = sheet.createRow(0);
        //创建第一行对应的列
        row0.createCell(0).setCellValue("编号");
        row0.createCell(1).setCellValue("姓名");
        row0.createCell(2).setCellValue("地址");
        row0.createCell(3).setCellValue("年龄");

        //存入 5 个数据
        for (int i = 1; i <= 5; i++) {
            XSSFRow rowi = sheet.createRow(i);
            rowi.createCell(0).setCellValue("test-" + i);
            rowi.createCell(1).setCellValue("王-" + i);
            rowi.createCell(2).setCellValue("陕西-" + i);
            rowi.createCell(3).setCellValue("23-" + i);
        }
        //把创建好的表格存储本地磁盘
        FileOutputStream fileOutputStream1 = new FileOutputStream("/Users/lazy-bay/Desktop/filename/sheeet.xlsx");

        xssfWorkbook.write(fileOutputStream1);

        xssfWorkbook.close();

    }

    public static void main(String[] args) throws Exception {
        PoiDemo poiDemo = new PoiDemo();
        poiDemo.WriteExcel();
    }
}
